user3750684
user3750684

Reputation: 23

Index of the string can be long?

I want to know whether we can give the index of the string as Long data type.

    var i=long.Parse(Console.ReadLine());
    var result = testString[i-1];

the second line giving me the error by saying that "The best overloaded method match for 'string.this[int]' has some invalid arguments."

Upvotes: 2

Views: 1389

Answers (3)

Siva Sankar Gorantla
Siva Sankar Gorantla

Reputation: 562

There is no way to pass long as an index of array, compiler doesn't allow that.

Workaround can be converting the long to int, this is called narrow conversion.

var result= testString[(int)i)];

Upvotes: 0

MikeDub
MikeDub

Reputation: 5283

No you can't use long for most collection types (you haven't specified what testString is).

One way to get around this would be to segregate the string into a multi-part / multi-dimension array then use a multiplier to get which part of the array to check.

For example: Your index is 100,000 and you have an array of shorts (32,767 length)...

string[,] testString = new string[100, 32766]; //Replace this with your Initialisation / existing string
var arrayRank = (int)Math.Round((double) 100000 / 32767, 0);
var arrayIndex = (int)Math.Round((double)100000 % 32767, 0);

//Test this works.
//testString[arrayRank, arrayIndex] = "test"; - Test to see that the array range is assignable.
var result = testString[arrayRank, arrayIndex]; //Test value is what we expect

This may not be the most efficient way to go about things, but it is a workaround.

Upvotes: 1

Rob
Rob

Reputation: 27367

No, it cannot accept a long. The only overload accepts an int indexer. You would need to change your code to int.Parse() instead of long.Parse()

Upvotes: 0

Related Questions