c# - 如果对象的属性是 "bigger"而不是 c# 中的另一个对象,则禁止编译

标签 c#

如果有人使对象的特定属性大于同一对象的另一个属性,我基本上不想允许编译。我可以这样做吗?有点像:

class Class1 {
    public int property1 { set; get; }
    public int property2 { set; get; }

    public void method (Class1 obj) {
        if (obj.property1 < obj.property2) {
            //won't compile!
        }
    }
}

class Class2 {
    static void Main() {
        Class1 obj = new Class1();
        obj.property1 = 10;
        obj.property2 = 11;
        obj.method(obj);
    }
}

最佳答案

您尝试检查的是运行时操作,编译器无法完成该操作。

最接近您需要做的事情是使用 C# sizeof 运算符来检查属性的大小(以字节为单位)。

关于c# - 如果对象的属性是 "bigger"而不是 c# 中的另一个对象,则禁止编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375348/

相关文章:

c# - RefCount 在 AtlUnadvise 调用后保持不变

c# - 分组并从列表中删除

c# - 有没有办法列出 .Net 程序集中方法的所有调用和硬编码字符串参数?

c# - 为什么这个 Task.Run lambda 会同步运行?

c# - 如何从库中初始化一个类?

c# - 在没有 DBSet 的情况下使用 c# linq 执行 SQL Server 存储过程

c# - 观察者能否使用 Rx 安全地监听多个可观察对象?

c# - 请确认 .NET 4.0 中路径长度相关行为的变化

c# - .Net C# 如何连接到外部 SQL Server 数据库? OleDb 还是其他?

C# 锁和异步方法