簡體   English   中英

在 c# 中將 object 作為 function 參數傳遞,就像在 javascript 中一樣

[英]Pass object as function parameter in c# like in javascript

是否有可能在 c# 中通過 object,就像我在 Javascript 中以通用方式一樣? 如何在 c# 中實現這一點? 由於所有變量都需要聲明,但它們具有不同的 class 名稱。

class human {
  constructor() {
    this.name = "John";
  }
}

class cat {
  constructor() {
    this.name = "Garfield";
  }
}


 function showName(character) {
    console.log("My name is: " + character.name)
  };

var character1 = new cat();
var character2 = new human();

showName(character1)
showName(character2)

我想制作與一個 function 相同的 showName 但 c# 需要聲明 class 名稱,如:

public void ShowName(Human human) {}
public void ShowName(Cat cat) {}

我可以像在 JS 中一樣在 c# 中實現這一點的示例代碼如何?

要在 C# 中執行此操作,您要么需要使用公共基類或接口(也許IHasName帶有string Name {get;}屬性,並將參數聲明為IHasName ,並聲明HumanCat都實現IHasName ),或者您可以拋開所有理由並將參數聲明為dynamic ,因為 JavaScript 感覺。 請做第一個,而不是第二個!

您可以使用接口來實現它。 接口為基於它實現的class 提供抽象,您可以在方法的arguments 中使用接口。 看這個例子:

public interface IBeings
{
    public string Name { get; set; }
}

public class Human : IBeings
{
    public string Name { get; set; }
}

public class Cat : IBeings
{
    public string Name { get; set; }
}

class Program
{
    static void ShowName(IBeings being)
    {
        Console.WriteLine($"My name is: {being.Name}");
    }

    static void Main(string[] args)
    {
        Human human1 = new Human() { Name = "John" };
        Cat cat1 = new Cat() { Name = "Kitty" };

        ShowName(human1);
        ShowName(cat1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM