相关疑难解决方法(0)

声明静态枚举的麻烦,C#

嗨,我试图像这样声明一个静态枚举:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Lds.CM.MyApp.Controllers
{
    public class MenuBarsController : Controller
    {
        // Menu Bar enums
        public static enum ProfileMenuBarTab { MainProfile, Edit, photoGallery }

        public ActionResult cpTopMenuBar(string tabSelected)
        {
            ...            
Run Code Online (Sandbox Code Playgroud)

"但我收到以下错误:"修饰符'静态'对此项无效."我知道这很简单,但我似乎无法看到问题.非常感谢!

c# enums static

57
推荐指数
3
解决办法
6万
查看次数

为什么.NET委托不能声明为静态?

当我尝试编译以下内容时:

public static delegate void MoveDelegate (Actor sender, MoveDirection args);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:"modifer'static'对此项无效."

我在一个单例中实现它,有一个单独的类调用委托.问题是,当我在另一个类中使用单例实例来调用委托时(来自标识符,而不是类型),我无论出于何种原因都不能这样做,即使我声明委托是非静态的.显然,当且仅当委托是静态的时候,我才能直接通过类型引用它.

这背后的原因是什么?我使用的是MonoDevelop 2.4.2.

更新

使用以下代码尝试其中一个建议后:

public void Move(MoveDirection moveDir)
{
    ProcessMove(moveDir);
}

public void ProcessMove(MoveDirection moveDir)
{
    Teleporter.MoveMethod mm = new Teleporter.MoveMethod(Move); 
    moveDelegate(this, moveDir);
}
Run Code Online (Sandbox Code Playgroud)

我收到了一个处理错误,指出MoveMethod必须是一个类型,而不是标识符.

c# delegates compiler-errors

23
推荐指数
3
解决办法
3万
查看次数

为什么在C#中不允许使用静态结构?

我总是习惯将结构视为某种较少特权的东西,或者具有较少特征的东西.也许是因为OOP概念将所有东西都吹成了类.

从少量暴露到C#,我理解设置一个静态类,确保其所有成员和函数都是静态的.此外,我们不能有一个构造函数来初始化该类,因为只有一个实例.

public static struct mystruct
{
    public static int a;
}
Run Code Online (Sandbox Code Playgroud)

我在堆栈溢出处指出这是一个错误的方法.有人可以详细说明.

当我创建一个新的cs文件并在控制台中编译它时,我得到了相应的错误,说"静态对此项无效".奇怪的是,当我将其添加到现有的工作项目中时,看看编译器是否会抱怨,但令我惊讶的是它没有.这有什么理由?

c# static language-features

9
推荐指数
2
解决办法
7103
查看次数