2017-01-24 9 views
0

Main()からメソッドを呼び出すことができないことが間違っているかどうかわかりません。 Visual StudioまたはIでのバグがこれはコードですMain()からメソッドを呼び出す

何か間違ったことをやっている場合、私は知らない。

using System; 
using System.Drawing; 
using System.Security.Claims; 
using Csharp_Projects.Constructs; 

namespace Csharp_Projects 
{ 
    static class Program 
    { 
     static void Main(string[] args) 
     { 
      ValueTypeContainingRefType(); 
     } 

     class ShapeInfo 
     { 
      public string infoString; 

      public ShapeInfo(string info) 
      { 
       infoString = info; 
      } 

      struct Rectangle 
      { 
       public ShapeInfo rectInfo; 

       public int recTop, rectleft, rectBottom, rectRight; 

       public Rectangle(string info, int top, int left, int Buttom, int Right) 
       { 
        rectInfo = new ShapeInfo(info); 
        recTop = top; 
        rectBottom = Buttom; 
        rectRight = Right; 
        rectleft = left; 
       } 

       public void Display() 
       { 
        Console.WriteLine("string={0},top={1},Bottom={2},"+"left={3},Right={4}",rectInfo,recTop,rectBottom,rectRight,rectleft); 
       } 
       public static void ValueTypeContainingRefType() 
       { 
        Console.WriteLine("Creating r1"); 
        Rectangle r1 = new Rectangle("First Rec", 10, 10, 50, 50); 
        Console.WriteLine("Assigning r2 to r1"); 
        Rectangle r2 = r1; 
        Console.WriteLine("Change Values of r2"); 
        r2.rectInfo.infoString = "This is new info!"; 
        r2.rectBottom = 222; 
        r1.Display(); 
        r2.Display(); 
       } 
      } 
     } 
    } 
} 

エラーメッセージは次のとおりです。

名"ValueTypeContainingRefType"は現在のコンテキストに存在しません。

ValueTypeContainingRefType

+6

これは、アクセスしようとしているメソッドが別のクラス内にあるためです。 – Rik

+0

あなたが呼び出しようとしているメソッドは、別のクラス内の構造体内にあり、静的でもあります。 – Clivey

+3

コンパイラが「絶対にナンセンス」な何かをしていると思うと、99.999999 ...%の時間が間違っています。 – itsme86

答えて

3

あなたRectangle構造体は、メソッドを所有しているメソッド名があるので、絶対にナンセンスいます。 ShapeInfoにネストされています。試してみてください:

static void Main(string[] args) 
{ 
    ShapeInfo.Rectangle.ValueTypeContainingRefType(); 
} 

また、Rectangleも公開する必要があります。

+1

'Rectangle'構造体にプライベートなのでアクセスできません。 –

+0

真。私はそれを私の答えに加えます。ありがとう! –

+0

公開してもアクセスできない – Mohsen

関連する問題