YSGStudyHards / DotNetGuide

🌈【C#/.NET/.NET Core学习、工作、面试指南】记录、收集和总结C#/.NET/.NET Core基础知识、学习路线、开发实战、编程技巧练习、学习视频、文章、书籍、项目框架、社区组织、开发必备工具、常见面试题、面试须知、简历模板、以及自己在学习和工作中的一些微薄见解。希望能和大家一起学习,共同进步。如果本知识库能为您提供帮助,别忘了给予支持哦(关注、点赞、分享)💖。
https://www.yuque.com/ysgstudyhard/da6e0c
MIT License
5.76k stars 862 forks source link

✍C#/.NET/.NET Core疑难问题解答 #22

Closed Yafeiml closed 12 months ago

Yafeiml commented 1 year ago
string[] names = { "yafei", "nan", "c#" };
while (enumerator.MoveNext())
{
    var name = (string) enumerator.Current;
    Console.WriteLine(name.GetType() + "   " + name.Length);
}

var name = (string) enumerator.Current; 这一句中的(string)具体作用是什么呢,已知的是不加这个name.Length是无效的?但是加不加这个getType得到的都是string,还有能说下这种用法叫什么吗?

YSGStudyHards commented 1 year ago
string[] names = { "yafei", "nan", "c#" };
while (enumerator.MoveNext())
{
    var name = (string) enumerator.Current;
    Console.WriteLine(name.GetType() + "   " + name.Length);
}

var name = (string) enumerator.Current; 这一句中的(string)具体作用是什么呢,已知的是不加这个name.Length是无效的?但是加不加这个getType得到的都是string,还有能说下这种用法叫什么吗?

关于(string)的作用,其实就是一种类型的显式转换,因为C#中var是一种匿名类型,编译器无法直接推断出name变量的类型,假如你把var替换成string就不需要使用这个显式转换了。

Yafeiml commented 1 year ago

关于(string)的作用,其实就是一种类型的显式转换,因为C#中var是一种匿名类型,编译器无法直接推断出name变量的类型,假如你把var替换成string就不需要使用这个显式转换了。

string name = enumerator.Current; 这样的话程序会报错,同样提示需要添加显示转换,不过明白了(string)属于显示转换,但是有区别于ToString(),感谢。