相关疑难解决方法(0)

为什么需要将静态方法包装到类中?

对不起这个问题没有学问的性质.如果有一个简单的答案,只需要一个解释链接就会让我感到高兴.

编程6个月后,我发现静态类对于存储适用于许多不同类的例程有些用处.这是我如何使用静态类的简化示例,它是一个用于将文本解析为各种内容的类

public static class TextProcessor 
{
    public static string[] GetWords(string sentence)
    {
        return sentence.Split(' '); 
    }

    public static int CountLetters(string sentence)
    {
        return sentence.Length; 
    }

    public static int CountWords(string sentence)
    {
        return GetWords(sentence).Length; 
    }
}
Run Code Online (Sandbox Code Playgroud)

我用这个明显的方式使用它

    class Program
{
    static void Main(string[] args)
    {
        string mysentence = "hello there stackoverflow.";
        Console.WriteLine("mysentence has {0} words in it, fascinating huh??", TextProcessor.CountWords(mysentence)); 

        Console.ReadLine(); 
    }
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么有必要将这些静态方法包装在静态类中?它似乎没有任何意义.有没有办法让我们可以将这些方法单独包装在一个类中?我知道封装是有益的,但我没有看到静态类包含静态方法的用法.有没有我风格或其他方面缺少的东西?我完全吠了一棵傻树吗?我想的太多了吗?

c# static-methods

8
推荐指数
1
解决办法
1302
查看次数

为什么我不能在使用静态导入时将扩展方法称为静态方法?

背景:

我有一个静态类,但静态方法不是扩展方法.我决定将方法重构为扩展方法,并且不希望任何代码破坏,因为扩展方法可以像静态方法一样被调用.但是,当静态导入用于保存扩展方法的静态类时,代码确实中断了.

例:

我有一个带有扩展方法和静态方法的静态类:

namespace UsingStaticExtensionTest.Extensions
{
    static class ExtensionClass
    {
        internal static void Test1(this Program pg)
        {
            System.Console.WriteLine("OK");
        }

        internal static void Test2(Program pg)
        {
            System.Console.WriteLine("OK");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下using指令时,测试程序中的所有内容都可以正常工作:

using UsingStaticExtensionTest.Extensions;
namespace UsingStaticExtensionTest

    {
        class Program
        {
            static void Main(string[] args)
            {
                var p = new Program();
                ExtensionClass.Test1(p); // OK
                p.Test1(); // OK
                ExtensionClass.Test2(p); // OK
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是当我使用static import using指令来识别带有扩展方法的类时,我不能将扩展方法称为静态方法:

using static UsingStaticExtensionTest.Extensions.ExtensionClass;
    class Program
    {
        static void Main(string[] args)
        {
            var p = new Program(); …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods static using

8
推荐指数
1
解决办法
1548
查看次数

导入C#类

我(非常)是C#的新手,我需要知道如何导入类.

在Java中,我可以说:

package com.test;
class Test {}
Run Code Online (Sandbox Code Playgroud)

然后在其他一些课程中:

package com.test2;
import com.test.Test;
Run Code Online (Sandbox Code Playgroud)

我怎么能在C#中做到这一点?

c# import

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

标签 统计

c# ×3

extension-methods ×1

import ×1

static ×1

static-methods ×1

using ×1