c# - 如何通过在 C# 中为实例赋值来设置类中的属性
问题描述
我正在尝试创建一个新的数据类型,并在类的属性值中有一个属性。
我可以从类中访问和操作属性。但是,在从外部访问值时,我必须将其用作 instance.Value。
是否可以通过直接将值分配给实例来设置属性,也许就像我们对基于数组的类使用索引器一样?
例如,我想做的是:
public class NewNumberType<T>
{
public T Value {get; set;}
}
在调用类中,我想将 NewNumberType 用作:
NewNumberType<double> d = new NewNumberType<double>();
// d.Value = 15; I dont want to do this
d = 15; // I want to refer the instance this way.
使用结构来完成这项工作可能并不理想。例如结构不允许无参数构造函数。它会抛出“结构不能包含显式无参数构造函数”错误。
总是希望使用一个类来代替。
解决方案
是的,这是可能的。您应该定义隐式转换运算符,如果您想在控制台中显示变量的值,也值得覆盖 ToString()
public class NewNumberType<T>
{
public NewNumberType(T v)
{
Value = v;
}
public NewNumberType()
{
}
public T Value { get; set; }
public static implicit operator NewNumberType<T>(T v)
{
return new NewNumberType<T>(v);
}
public override string ToString()
{
return Value.ToString();
}
}
程序.cs:
class Program
{
static void Main(string[] args)
{
NewNumberType<double> d = new NewNumberType<double>();
d = 15;
Console.WriteLine(d);
Console.ReadLine();
}
}
推荐阅读
- arrays - 用变量设置一维数组的长度
- android - tgkill - Android 8.0 Samsung S8 上的本机错误
- c++11 - std::atomic_bool 值的严格转换
- php - heroku 是否支持 php 本机 C 扩展?
- rust - 如何在 Rust 中按未知数量的制表符、空格和换行符进行拆分?
- google-apps-script - 当 Google 任务标记为“已完成”时如何触发 Google 脚本
- vb.net - 为什么我在 MessageBox 上收到此错误?
- ios - xCode unity-iphone 需要配置文件
- regex - Bash 无法将来自 blkid 的信息存储到变量中
- javascript - 尝试将 div 转换为可下载图像时未捕获(在 Promise 中)