Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如何通过将不同的类对象传递给同一个方法来重用该方法?_C# 4.0 - Fatal编程技术网

C# 4.0 如何通过将不同的类对象传递给同一个方法来重用该方法?

C# 4.0 如何通过将不同的类对象传递给同一个方法来重用该方法?,c#-4.0,C# 4.0,如何通过传递不同的类对象来重用方法?我有两个不同的类,ClassOne和ClassTwo,在ProcessMessage方法中,我也想传递这个类,但是如何传递呢? 在某种程度上类似于//ProcessMessage(classText,objectTwo) 如果我使用这个(在得到你们的帮助之后),我知道,我如何使用testClass 比如:var text=testClass.MethodOne();还是什么 public static void ProcessMessage(string cl

如何通过传递不同的类对象来重用方法?我有两个不同的类,ClassOne和ClassTwo,在ProcessMessage方法中,我也想传递这个类,但是如何传递呢? 在某种程度上类似于//ProcessMessage(classText,objectTwo)

如果我使用这个(在得到你们的帮助之后),我知道,我如何使用testClass

比如:var text=testClass.MethodOne();还是什么

public static void ProcessMessage(string classText, ClassOne testClass)
{
    Console.WriteLine("ClassText:{0}", classText);
}

我不确定您为什么要这样做,因为您没有在任何地方使用
ProcessMessage
中的
testClass
参数。但是您可以使用通用方法将任何类型的类传递给您的方法:

public static void ProcessMessage<T>(string classText, T testClass) 
     where T : class
{
    Console.WriteLine("ClassText:{0}", classText);
}

我不确定您为什么要这样做,因为您没有在任何地方使用
ProcessMessage
中的
testClass
参数。但是您可以使用通用方法将任何类型的类传递给您的方法:

public static void ProcessMessage<T>(string classText, T testClass) 
     where T : class
{
    Console.WriteLine("ClassText:{0}", classText);
}

使用泛型是可能的,但正如Prerak K所说,为什么

    class ClassOne
{
    public string MethodOne()
    {
        return ("ClassOne");
    }
}



class ClassTwo
{
    public string MethodOne()
    {
        return ("ClassTwo");
    }
}


class Program
{
    static void Main()
    {
        var objectOne = new ClassOne();
        var classText = objectOne.MethodOne();
        ProcessMessage(classText, objectOne);


        var objectTwo = new ClassTwo();
        classText = objectTwo.MethodOne();
        ProcessMessage(classText, objectTwo);

        Console.ReadKey();
    }

    public static void ProcessMessage<T>(string classText, T testClass)
    {
        Console.WriteLine("ClassText:{0}", classText);
    }
}
一类
{
公共字符串MethodOne()
{
报税表(“一级”);
}
}
二班
{
公共字符串MethodOne()
{
申报表(“第二类”);
}
}
班级计划
{
静态void Main()
{
var objectOne=new ClassOne();
var classText=objectOne.MethodOne();
ProcessMessage(classText,objectOne);
var objectTwo=newclasstwo();
classText=objectTwo.MethodOne();
ProcessMessage(classText,objectTwo);
Console.ReadKey();
}
公共静态void ProcessMessage(字符串classText,T testClass)
{
WriteLine(“ClassText:{0}”,ClassText);
}
}

可以使用泛型,但正如Prerak K所说,为什么

    class ClassOne
{
    public string MethodOne()
    {
        return ("ClassOne");
    }
}



class ClassTwo
{
    public string MethodOne()
    {
        return ("ClassTwo");
    }
}


class Program
{
    static void Main()
    {
        var objectOne = new ClassOne();
        var classText = objectOne.MethodOne();
        ProcessMessage(classText, objectOne);


        var objectTwo = new ClassTwo();
        classText = objectTwo.MethodOne();
        ProcessMessage(classText, objectTwo);

        Console.ReadKey();
    }

    public static void ProcessMessage<T>(string classText, T testClass)
    {
        Console.WriteLine("ClassText:{0}", classText);
    }
}
一类
{
公共字符串MethodOne()
{
报税表(“一级”);
}
}
二班
{
公共字符串MethodOne()
{
申报表(“第二类”);
}
}
班级计划
{
静态void Main()
{
var objectOne=new ClassOne();
var classText=objectOne.MethodOne();
ProcessMessage(classText,objectOne);
var objectTwo=newclasstwo();
classText=objectTwo.MethodOne();
ProcessMessage(classText,objectTwo);
Console.ReadKey();
}
公共静态void ProcessMessage(字符串classText,T testClass)
{
WriteLine(“ClassText:{0}”,ClassText);
}
}

或者您可以创建如下界面:

interface IProcessable {
    string MethodOne();
}

class ClassOne : IProcessable
{
    public string MethodOne()
    {
        return ("ClassOne");
    }
}

class ClassTwo : IProcessable
{
    public string MethodOne()
    {
        return ("ClassTwo");
    }
}

class Program
{
    static void Main()
    {
        IProcessable objectOne = new ClassOne();
        var classText = objectOne.MethodOne();
        ProcessMessage(classText, objectOne);

        IProcessable objectTwo = new ClassTwo(); 
        classText = objectTwo.MethodOne();
        ProcessMessage(classText, objectTwo);
        Console.ReadKey();
    }

    public static void ProcessMessage(string classText,  IProcessable testClass)
    {
        Console.WriteLine("ClassText:{0}", classText);
    }
}

或者,您可以创建如下界面:

interface IProcessable {
    string MethodOne();
}

class ClassOne : IProcessable
{
    public string MethodOne()
    {
        return ("ClassOne");
    }
}

class ClassTwo : IProcessable
{
    public string MethodOne()
    {
        return ("ClassTwo");
    }
}

class Program
{
    static void Main()
    {
        IProcessable objectOne = new ClassOne();
        var classText = objectOne.MethodOne();
        ProcessMessage(classText, objectOne);

        IProcessable objectTwo = new ClassTwo(); 
        classText = objectTwo.MethodOne();
        ProcessMessage(classText, objectTwo);
        Console.ReadKey();
    }

    public static void ProcessMessage(string classText,  IProcessable testClass)
    {
        Console.WriteLine("ClassText:{0}", classText);
    }
}

为什么要这样做?我现在看到的示例有点奇怪,我删除了一些代码以缩短它!为什么要这样做?我现在看到的示例有点奇怪,我删除了一些代码以缩短它!或者在中使用testclass参数为这两个classesIm创建一个接口,但在本例中,我删除了它以缩短它!或者在中使用testclass参数为这两个classesIm创建一个接口,但在本例中,我删除了它以缩短它!