Хорошо, давайте переходим друг к другу.
Print int array: 0xbfd66a88
Здесь вы печатаете int [], который переходит в перегрузку operator <<
, которая принимает int *. И когда вы печатаете указатель, вы видите адрес памяти в шестнадцатеричном формате.
Print int array[0]: 5
Здесь вы печатаете первый элемент массива, который является int
. Как и ожидалось.
Print int array[0]+1: 6
Здесь вы добавляете 1 к первому элементу массива и печатаете результат, который по-прежнему остается int
. 5 + 1 становится 6. Нет таинственности здесь.
Print char array: abcd
Это немного сложнее. Вы печатаете char[]
, и есть специальная перегрузка для operator <<
, которая принимает const char*
и вызывает вызов. То, что делает эта перегрузка, - это печатать каждый символ, начиная с адреса, где указатель указывает до тех пор, пока он не найдет нулевой конец.
Print char array[0]: a
Здесь вы печатаете char
, поэтому вызывается перегрузка, которая принимает char
, Он печатает соответствующий символ ASCII, который является «a».
Print char array[0]+1: 98
Здесь результатом operator+
является int
, потому что буква 1 является значением int
и char
повышается до более широкого типа (int
). Результат равен 98, потому что код ASCII буквы «a» равен 97. Когда вы печатаете int
, вы просто видите номер.
Есть несколько способов сделать это, но этот наиболее в духе Xamarin:
Xamarin.Forms.Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
Вам необходимо установить WindowSoftInputMode
в вашем MainActivity.cs .
Вот как вы можете это сделать
[Activity(Label = "MyActivity", Theme = "@style/CustomTheme", WindowSoftInputMode = SoftInput.AdjustResize)]
Или поставить строку ниже в методе OnCreate () MainActivity . [ 115]
Window.SetSoftInputMode(Android.Views.SoftInput.AdjustResize);