C#中的输出型参数类型是指在函数调用时,可以将函数的返回值传递给调用者。它与传统的参数不同,因为它不仅能够接收参数,还能够将函数的返回值传递给调用者。
C#中的输出型参数使用out关键字来声明,它必须在方法声明时使用out关键字来标识。例如:
public void GetValue(out int x) { x = 10; }
上面的代码声明了一个名为GetValue()的方法,它有一个int类型的输出参数x。当我们在其他地方调用GetValue()方法时,我们必须使用out关键字来标识x参数:
int y; GetValue(out y); // 这里必须使用out关键字
当我们调用GetValue()方法时,y变量将会接收到x变量传递过来的10值。
此外,C#中也有ref关键字声明引用类型的输出参数。ref关键字声明引用类型的输出参数也是一样的:
public void GetObject(ref MyClass obj) { obj = new MyClass(); // 创建新对象 }
上面代码声明了一个名为GetObject() 的方法,它有一个MyClass 类型的引用类型输出参數obj。当我们在其他地方被要求时,我们必须使用ref 关键字来标识obj 参數:
MyClass myObj; // 声明MyClass 类对象 GetObject(ref myObj); // 这里必须使用ref 关键字
当我们执行上这行代码时,myObj 对象将会接收创建文对象obj 的引用。
类型参数可以在类,结构,接口,委托和方法的声明中引入。
其他构造(如属性)不能引入类型参数,但可以使用一个。
例如,属性Value使用T:
public struct Nullable<T> { public T Value { get; } }
泛型类型或方法可以有多个参数。
例如:
class Dictionary<TKey, TValue> {...}
实例化:
Dictionary<int,string> myDic = new Dictionary<int,string>();
或者:
var myDic = new Dictionary<int,string>();
泛型类型名称和方法名称可以重载,只要类型参数的数量不同。
例如,以下两种类型名称不冲突:
class A<T> {} class A<T1,T2> {}
默认关键字可用于获取给定通用类型参数的默认值。
引用类型的默认值为null,值类型的默认值为按值类型的字段进行按位置零的结果:
static void MyMethod<T> (T[] array) { for (int i = 0; i < array.Length; i++) { array[i] = default(T); } }
C#对象初始化任何可访问的字段或对象的属性可以在构造之后通过对象初始化器直接设置。例如,考虑下面的类:public class Person ...
C#布尔类型/运算符C#的bool类型别名System.Boolean类型是一个逻辑值,可以分配文本true或false。我们使用bool类型来表示一个tu...