相关疑难解决方法(0)

为什么使用仅使用静态方法的类?

我想知道仅使用静态方法创建类的原因,例如ConsoleConvert类.我能想到的唯一原因是将相关函数组合在一起,所以这与命名空间有何不同.

.net c# oop class

3
推荐指数
1
解决办法
147
查看次数

为什么我们不能在.Net中创建静态类的实例

根据MSDN

" 一个类可以声明为static,表示它只包含静态成员.不可能使用new关键字创建静态类的实例.静态类由.NET Framework公共语言运行时(CLR)自动加载当加载包含该类的程序或命名空间时. "

在对它进行一些研究之后,我发现静态类不包含实例构造函数.我不明白为什么静态类不包含实例构造函数以及static关键字的用途.为什么.Net不允许我们创建静态类的实例?

.net c# static

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

多变量方法的实例与静态方法

如果你有一个Point3类并且有一个方法被调用Distance,你应该像这样静态:

Point3.Distance ( p1, p2 );
Run Code Online (Sandbox Code Playgroud)

或者类似的实例方法:

this.Distance ( p );
Run Code Online (Sandbox Code Playgroud)

我意识到使用静态方法阻碍了继承和覆盖,对吧?

哪一个更好,为什么?

.net c#

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

了解静态类和静态方法

假设我有一个像这样的方法:

public class MyDataAccess
{
    public static StudentDataTable GetStudentRecords(int schoolID)
    {
        var ta = new StudentTableAdapter();
        using (ta.Connection = new SqlConnection(GetCS()))
        {
            var result = ta.GetStudentRecords(schoolID);
            return result;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果使用控制台应用程序或任何其他方式一次访问此方法1,000次,是否有可能将一个学校的学生的记录返回到另一所学校?

例如

var records1 = GetStudentRecords(1);
.....
var records1000 = GetStudentRecords(1000);
Run Code Online (Sandbox Code Playgroud)

records1变量是否有可能获得schoolID = 1混合记录的记录records1000,即使它们来自自己的线程?

如果我将这个类改为静态会发生什么呢?

我在这一点上的理解

1)是的,我明白课程是什么

2)是的,我知道静态类不需要使用所需的实例

3)我知道应该有简单的静态代码,例如转换数据类型.

但我感到困惑的是:

当存在单个静态类并且有一百万个对象试图访问STACK中的同一对象时会发生什么

特别是当它是一个dataAccess类或一个访问activeDirectory对象的类时.

我在程序员SE聊天室聊了聊.他们没有明确地说出来,但我得到的印象是永远不要使用静态类来查询例如sql,活动目录等.而且静态类应该仅限于简单的静态代码 - 不需要查询.

c#

0
推荐指数
2
解决办法
159
查看次数

标签 统计

c# ×4

.net ×3

class ×1

oop ×1

static ×1