小编Dam*_*ury的帖子

C# - 基础类型的强制转换是如何工作的?

这可能是重复的,但我找不到类似的问题.我不明白如何在没有数据丢失的情况下对基类型进行隐式转换.例如,我创建了这个类Person:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我做以下时:

object personAsObject = new Person { Name = "Foo", Age = 1 };
var person = (Person) personAsObject;
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
Run Code Online (Sandbox Code Playgroud)

怎么样object能够保持属性的值Name,并Age因为它只有4种方法Equals,GetHashCode,GetTypeToString?为什么对子类的强制转换会抛出InvalidCastException?我希望这是可能的,因为如果成员不是私人的,那么他们就会被继承.

c# casting class object

2
推荐指数
1
解决办法
137
查看次数

C# - 接口通用方法约束以匹配派生类型

假设我有一个接口IA,包含一个名为Foo的泛型方法.

public interface IA {
    int Foo<T>(T otherType);
}
Run Code Online (Sandbox Code Playgroud)

我希望T与派生类的类型相同:

class A : IA {
    int Foo(A otherType)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过以下(语法错误):

public interface IA {
    int Foo<T>(T otherType) where T : this;
}
Run Code Online (Sandbox Code Playgroud)

我的约束如何才能实现这一目标?

c# generics inheritance interface constraints

0
推荐指数
1
解决办法
316
查看次数

标签 统计

c# ×2

casting ×1

class ×1

constraints ×1

generics ×1

inheritance ×1

interface ×1

object ×1