对(二)中 new 的补充
//声明匿名类型创建对象,并且用隐式变量对其进行引用
var personUnknown = new { Name = "Pas.by", Age = 32 };
Console.WriteLine(personUnknown.Name);
Console.WriteLine(personUnknown.Age);
Console.WriteLine(personUnknown.GetType().Name);
一.类型转换
1.隐式转换
- 不丢失精度(小数据向大数据转换 int 向 long转换)
- 子类向父类转换:当一个引用变量引用的实例赋给另一个引用变量时,被赋值的引用变量可访问的数据取决于自身的类型
class Program
{
static void Main(string[] args)
{
Son son = new Son();
Console.WriteLine(son.name);
Father father = (Father)son;
//子类向父类的转换,直接通过类型转换符(T)x,将son转换为Father类并赋予引用变量father
Console.WriteLine(father.name);
}
class Father
{
public string name = "father";
public string car = "Audi";
void PrintFather()
{
Console.WriteLine("I'm father.");
}
}
class Son : Father
{
public string name = "son";
void PrintSon()
{
Console.WriteLine("I'm son.");
}
}
- 装箱(之后详细记录)
2.显式转换
- cast:使用类型转换操作符(可能会损失数据)
int x = 65536;
ushort y = (ushort) x;
//此处会损失,因为 65536 超过了ushort的上限65535,最终会将 0 赋值给y
//转为二进制数字更好理解了
- 拆箱(之后详细记录)
- 使用Convert类
int a = 100;
double b = Convert.ToDouble(a); //调用了Convert类中的ToDouble方法
- ToString与Parse、TryParse
int a = 100;
string b = a.ToString(); //调用了Int32结构体中的ToString方法
//-------------------------------
string str1 = &