2011-01-28 5 views
12

次の静的関数を使用しようとするとエラーが発生します。パブリックstatic String MyFunc()で "Expected class、delegate、enum、interface or struct"エラーが発生しました。 "string"の代わりに何がありますか?

エラー:

Expected class, delegate, enum, interface, or struct

は関数(およびクラス):

namespace MyNamespace 
{ 
    public class MyClass 
    { 
     // Some other static methods that use Classes, delegates, enums, interfaces, or structs 

     public static string MyFunc(string myVar){ 
      string myText = myVar; 
      //Do some stuff with myText and myVar 
      return myText; 
     } 
    } 
} 

これは、コンパイラが怒っ(赤)public static stringの文字列部分を強調させています。

したがって、これは、stringがクラス、デリゲート、enum、インターフェイス、または構造体ではないことを意味します。

stringの代わりに文字列や文字列のようなオブジェクトを返すにはどうすればよいですか? C#にはString(大文字のS)クラスはありません。

:一部のコメント付きコードとのブラケットの不一致 - 上記のコードは正しく機能しますが、実際の誤ったコードは一致しませんでした。ありがとう!

答えて

24

メソッド定義をクラス/構造体定義に入れる必要があります。メソッド定義はそれらの外側に現れることはできません。

+0

は(私は思った)でした。それらの詳細を含めるようにコードを更新しています... – Peach

+4

そして、私はそれが他の原因でこの特定のコンパイラエラーに遭遇していないことは確かです。あなたの括弧をチェックしてください、それは理由もあります。 – Femaref

+0

それは、中括弧、良いキャッチだった! – Peach

4

C#/ Net - System.Stringに大文字のS文字列があります。しかし、それはあなたの問題ではありません。 @Femarefは正しくなっています - このエラーは、あなたのメソッドがクラスの一部ではないことを示しています。

C#はC++のようなスタンドアロン機能をサポートしていません。すべてのメソッドは、クラス、インターフェース、または構造体定義の本体の中で宣言されなければなりません。

+0

かなり正しいです。ブラケットミスマッチが少し改善されるまで見なかった。説明をありがとう。 – Peach

0

P-Invokeに再習得するときにこの問題が発生しました。 Femarefがそれを持っていました。

ワーキングコード:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Runtime.InteropServices; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     [DllImport("kernel32.dll", CharSet = CharSet.Auto)] 
     public static extern IntPtr GetModuleHandle(string lpModuleName); 

     static void Main(string[] args) 
     { 

     } 
    } 
} 

ブロークン・コード:ここでは簡単可視化の目的のためにいくつかのサンプルコードです

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Runtime.InteropServices; 

[DllImport("kernel32.dll", CharSet=CharSet.Auto)] 
public static extern IntPtr GetModuleHandle(string lpModuleName); 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

     } 
    } 
} 
関連する問題