gpt4 book ai didi

c# 派生自 int32

转载 作者:可可西里 更新时间:2023-11-01 03:03:33 26 4
gpt4 key购买 nike

我有几个类的成员称为“Id”。最初我想将它们存储为整数,但我想要一些保护层,以确保我不会不小心将房间 ID 分配给某人等。

一个解决方案是 typedef(使用 RoomId = System.Int32;)但是我需要在所有使用这些文件的文件中使用该行代码。我更喜欢例如从 int32 派生的 RoomId 类,但我不知道如何设置它以允许显式转换(用于初始化)

或者我应该以其他方式做到这一点?

最佳答案

您不能从 Int32 派生,但您可以指定隐式转换,这可能会为您提供所需的行为:

public struct RoomId
{
private int _Value;

public static implicit operator RoomId(int value)
{
return new RoomId { _Value = value };
}

public static implicit operator int(RoomId value)
{
return value._Value;
}
}

// ...

RoomId id = 42;

Console.WriteLine(id == 41); // False
Console.WriteLine(id == 42); // True
Console.WriteLine(id < 42); // False
Console.WriteLine(id > 41); // True
Console.WriteLine(id * 2); // 84

关于c# 派生自 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com