आप एक बहु-आयामी सरणी की चौड़ाई और ऊंचाई कैसे प्राप्त करते हैं?


180

मेरे पास एक एरे परिभाषित है:

int [,] ary;
// ...
int nArea = ary.Length; // x*y or total area

यह सब अच्छी तरह से और अच्छा है, लेकिन मुझे यह जानना होगा कि यह सरणी व्यक्तिगत रूप से कितनी व्यापक है xऔर yआयाम है। अर्थात्, ary.Length12 लौट सकते हैं - लेकिन इसका मतलब यह है कि सरणी 4 उच्च और 3 चौड़ी है, या 6 उच्च और 2 चौड़ी है?

मैं यह जानकारी कैसे प्राप्त कर सकता हूं?



जवाबों:


235

आप Array.GetLength का उपयोग उस आयाम के सूचकांक के साथ करते हैं जिसे आप पुनः प्राप्त करना चाहते हैं।


104
.Rankआयामों की संख्या के लिए। मामले में यह 2 है, .GetLength(0)पंक्तियों .GetLength(1)की संख्या के लिए , स्तंभों की संख्या के लिए।
कर्नल पैनिक

114

लंबाई के बजाय GetLength () का उपयोग करें।

int rowsOrHeight = ary.GetLength(0);
int colsOrWidth = ary.GetLength(1);


24

अन्य पदों में से कुछ भ्रमित हैं कि कौन सा आयाम कौन सा है। यहां एक NUNIT परीक्षण है जो दिखाता है कि C # में 2 डी सरणियां कैसे काम करती हैं

[Test]
public void ArraysAreRowMajor()
{
    var myArray = new int[2,3]
        {
            {1, 2, 3},
            {4, 5, 6}
        };

    int rows = myArray.GetLength(0);
    int columns = myArray.GetLength(1);
    Assert.AreEqual(2,rows);
    Assert.AreEqual(3,columns);
    Assert.AreEqual(1,myArray[0,0]);
    Assert.AreEqual(2,myArray[0,1]);
    Assert.AreEqual(3,myArray[0,2]);
    Assert.AreEqual(4,myArray[1,0]);
    Assert.AreEqual(5,myArray[1,1]);
    Assert.AreEqual(6,myArray[1,2]);
}


3

आप प्रत्येक निर्दिष्ट आयामों में अंतिम तत्वों की अनुक्रमणिका प्राप्त करने पर भी विचार कर सकते हैं।

int x = ary.GetUpperBound(0);
int y = ary.GetUpperBound(1);

ध्यान रखें कि यह 0-आधारित के रूप में सूचकांक का मूल्य प्राप्त करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.