3.试简述C#中string str = null 与 string str ="", 请配合内存图加以说明。 4.试简述C#中扩展方法概念和使用,并举例加以说明。
时间: 2024-12-11 19:25:52 浏览: 24
3. 在C#中,`string str = null` 和 `string str = ""` 的区别主要在于它们分别代表了字符串变量的不同初始值。
- 当你声明 `string str = null;` 时,str是一个引用类型的变量,它指向的是null,这意味着它并没有实际的字符串对象占用内存空间。如果尝试使用这个未初始化的null字符串,可能会引发空引用异常(NullReferenceException)。
- 而当你声明 `string str = "";` 时,str变量被赋予了一个空字符串值,这是一个已存在的、长度为0的字符串对象实例,系统会为其分配内存并存储在堆区。虽然它的内容是空的,但并不会导致错误。
内存图示例上,对于 `null`,你会看到有一个指向 `null` 地址的箭头;对于 `""`,则会有指向字符串池(String Interning)的一个地址,其中存储着空字符串常量。
4. C#中的扩展方法(Extension Method)是一种特殊的静态方法,它允许你在不改变现有类定义的情况下向其添加新功能。这种方法需要以静态类的形式定义在命名空间里,并以`this`关键字作为第一个参数,表示该方法将应用于当前类型的实例。例如:
```csharp
public static class StringExtensions
{
public static bool IsPalindrome(this string s)
{
return s == new string(s.Reverse().ToArray());
}
}
```
在这个例子中,我们为`string`类型添加了一个名为`IsPalindrome`的扩展方法。现在你可以像这样调用它:
```csharp
string myString = "radar";
if (myString.IsPalindrome()) // 调用了扩展方法
{
Console.WriteLine("是回文");
}
```
阅读全文