c# – 我可以使用=运算符指定构造函数值吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 我可以使用=运算符指定构造函数值吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1326字,纯文字阅读大概需要2分钟。
内容图文
![c# – 我可以使用=运算符指定构造函数值吗?](/upload/InfoBanner/zyjiaocheng/754/4c6dca55e5d34f8c8ea5ee00e7bafdb0.jpg)
在C#中创建一个字符串时,你要做字符串foo =“bar”; string是一个类,值“bar”使用=运算符传递给类.怎么做的?你能在自己的班上做这件事吗?
我知道这在C中是可行的.
class someClass {
public:
someClass(int someInt) {
// Do Stuff
}
};
int main() {
someClass classInst = 123;
}
但是C#会等同于什么?
解决方法:
这个问题分为两部分:
>字符串文字如何工作
>如何为自己的班级做同样的事情
字符串文字
表达式“bar”已经是string类型的值.这里的赋值运算符只是复制引用,就像其他任何东西一样.字符串文字可以在可能的情况下创建字符串对象(但重用,所以如果你在循环中有这个代码,那么只有一个字符串对象).这里有一些关于FormattableString周围的插值字符串文字的细微之处,但为了这个问题,我会忽略它.
创建自己的类文字语法
你不能让赋值运算符直接隐式调用构造函数,不.你可以添加一个从int到SomeClass的隐式转换,但我通常不鼓励这样做.
这是一个完整的例子,如果你真的想要这样做,但它真的不是惯用的.当您进行隐式转换时,例如,您更难以推断重载解析 – 并且任何读取代码的人都必须知道存在用户定义的隐式转换.
using System;
class SomeClass
{
public int Value { get; }
public SomeClass(int value) => Value = value;
public static implicit operator SomeClass(int value) =>
new SomeClass(value);
}
public class Program
{
static void Main()
{
SomeClass x = 123;
Console.WriteLine(x.Value);
}
}
请注意,如果target-typed new功能在C#8中传递,您可以编写:
SomeClass x = new(123);
…所以你至少可以在那里保存复制品,即使是田地也是如此.
内容总结
以上是互联网集市为您收集整理的c# – 我可以使用=运算符指定构造函数值吗?全部内容,希望文章能够帮你解决c# – 我可以使用=运算符指定构造函数值吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。